﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace PVFSLEAP
{

    /***************************************************************************************************
    * 1. 클래스: 통신하는 클래스
    * 2. 설명: 센서필드에서 통신할 때 관련된 클래스 정의
    * 3. 입력 
    *     1) k
    * ************************************************************************************************/
	class C_COMM
	{
		private object	DG;

		int NDCT;

		public const int FLSE = 0;
		public const int TRUE = 1;

		public const int TTND = 101; // 

		public const int CLST = 99;   // 클러스터   JK
		public const int WDTH = 1000; // 필드 넓이  JK
		public const int HGHT = 1000; // 필드  JK

		public const int INIT = 0;	// Initial
		public const int SCND = 1;	// Search Node
		public const int CNMD = 2;	// Compromised Node
		public const int WORM = 3;	// Wormhole Node
		public const int NPRT = 4;	// No Parent Node
		public const int EVNT = 5;	// Choose Evnet

		public C_COMM()
		{
		}

		public void SetNDCT( int C )
		{
			NDCT = C;
		}

		public void SetGrid( object sdg )
		{
			this.DG = sdg;
		}

		public void AlignCell( string CL, string F )
		{
			if ( F == "R" )
				( ( DataGridView )DG ).Columns[CL].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight;
			else if ( F == "C" )
				( ( DataGridView )DG ).Columns[CL].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
		}

   /***************************************************************************************************
    * 1. 함수: 보트 생성 시 에너지 소비
    * 2. 설명: 센서노드에서 보트 생성 할 때 에너지 소비하는 함수
    * 3. 입력 
    *     1) E: 에너지
    *     2) S: 센서노드
    * ************************************************************************************************/
		public double consumeGeneratingVote( double E, int S )
		{
			return E + 15f * S;
		}

   /***************************************************************************************************
    * 1. 함수: 보고서를 전송 시 에너지 소비
    * 2. 설명: 다음 노드로 보고서 전송할 때 에너지 소비
    * 3. 입력 
    *     1) E: 에너지
    *     2) S: 센서노드
    * ************************************************************************************************/
		public double consumeTransmitting( double E, int S )
		{
			return E + 16.56f * S;
		}

   /***************************************************************************************************
    * 1. 함수: 노드에서 보고서 받을 시 에너지 소비
    * 2. 설명: 다음노드가 보고서를 받을 때 소비되는 에너지
    * 3. 입력 
    *     1) E: 에너지
    *     2) S: 센서노드
    * ************************************************************************************************/
		public double consumeReceiving( double E, int S )
		{
			return E + 12.5f * S;
		}
	}
}
